package com.qf.controller2;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttribute;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/resp")

//指定data名称的数据存入session域对象中
@SessionAttributes({"data"})
public class ResponseController {

    /*
        响应方式一：跳转页面
            跳转html -- 无法携带数据
            跳转jsp -- 可以携带数据（域对象）
                request域对象
                session域对象
     */

    @RequestMapping("/resp1")
    public String resp1(Model model){

        //默认存储在request域中.如果想存入sesssion域，在当前类上使用@SessionAttributes注解，标识哪些名称的数据存入session
        model.addAttribute("data","abcdef");
//        return "forward:/hello.jsp";
        return "redirect:/hello.jsp";
    }

    @RequestMapping("/resp2")
    public ModelAndView resp2(){
        //模型和视图对象（封装数据和视图的）
        ModelAndView mav = new ModelAndView();

        //设置数据
        mav.addObject("data","aaaabbbb");
        //设置视图
        mav.setViewName("forward:/hello.jsp");

        return mav;
    }


    /*
        响应方式二：直接通过响应体，将具体数据响应到页面
            响应字符串数据  String
            响应对象数据 -- 由JACKSON帮我们将对象转成json格式字符串

            produces = "text/html;charset=utf-8" 解决返回值为String类型时的响应中文乱码
                这种比较麻烦，因为每一个处理器方法都要单独设置，不推荐使用

            当返回值为String类型时，springmvc内部在进行消息数据转换时使用的是 StringHttpMessageConverter，这个对象内部默认的字符集是iso-8859-1
                我们可以在springmvc的配置文件中，对这个转换器的默认码表进行修改

     */
    @RequestMapping(value = "/resp3"/*,produces = "text/html;charset=utf-8"*/)
    @ResponseBody  //表示这个是一个响应体内容
    public String resp3(){

//        return "success....";
        return "成功....";
    }

}